10 OPEN1,8,3,"WORTSCHATZ":OPEN15,8,15:REM WORTSCHATZ-DATEI OEFFNEN 20 DATA1,3,0,28,31,47,51,60,68,0,70,76,0,82,90,93,100,101,116,149,155,158 30 DATA178,0,0,189 35 DATA198 :REM BUCHSTABE NACH Z !?! 40 DIMIN(26):FORI=0TO26:READIN(I):NEXTI 50 GOSUB50000 60 PRINT"SN="SN:PRINT"VE="VE:PRINT"O1="O1:PRINT"O2="O2:PRINT"UD="UD:PRINT"RI="RI 70 PRINT"AD="AD:PRINT:GOTO50 50000 REM ***************************** 50001 REM * * 50002 REM * WORT-PARSER 4.0 * 50003 REM * * 50004 REM * 1986 BEI * 50005 REM * * 50006 REM * MICHAEL NICKLES * 50007 REM * * 50008 REM ***************************** 50010 REM BEFEHLSSATZEINGABE --------------------------------------------------- 50011 : 50012 IFUD>0THEN50500:REM UND 50015 SL=80: REM BEFEHLSSATZLAENGE 50020 PRINT"":BE$="":POKE198,0:POKE211,0:POKE214,22:SYS58732:PRINT"[158][164]"; 50030 GETX$:IFPEEK(203)=1THEN50120 50040 IFX$=""THEN50030 50050 IFLEN(BE$)=0ANDASC(X$)=20THEN50030 50060 I=ASC(X$):IFI<32ORI>133ANDI<159THENIFI<>20THEN50030 50070 IFLEN(BE$)=SLANDI<>20THEN50030 50080 BE$=BE$+X$ 50090 PRINTCHR$(20);X$;"[164]"; 50100 IFI=20THENBE$=LEFT$(BE$,LEN(BE$)-2):GOTO50030 50110 GOTO50030 50120 PRINT"[157] " 50400 REM SATZZEICHEN SUCHEN --------------------------------------------------- 50401 : 50415 SN=0 50420 IFRIGHT$(BE$,1)=" "THENBE$=LEFT$(BE$,LEN(BE$)-1):GOTO50420 50430 I$=RIGHT$(BE$,1) 50440 IFI$="."ORI$="!"THENSN=0:BE$=LEFT$(BE$,LEN(BE$)-1):GOTO50420 50450 IFI$="?"THENSN=1:BE$=LEFT$(BE$,LEN(BE$)-1):GOTO50420 50500 REM BE$-ZEIGER SETZEN ---------------------------------------------------- 50501 : 50502 IFUD=0THENVE=0:RI=0:O1=0:O2=0 50504 IFUD>0THENRI=0:GOTO50530 50505 IFLEFT$(BE$,1)=" "THENBE$=RIGHT$(BE$,LEN(BE$)-1):GOTO50505 50510 BE$=BE$+" " 50520 ZA=1 :REM ZEIGER A SETZEN 50530 ZB=ZA+1 50540 IFMID$(BE$,ZB,1)=""THENUD=0:RETURN 50550 IFMID$(BE$,ZB,1)<>" "THENZB=ZB+1:GOTO50550 50590 SU$=MID$(BE$,ZA,ZB-ZA) 50600 REM SU$ VORBEHANDLUNG ---------------------------------------------------- 50601 : 50610 IFSU$="UND"THENUD=1:GOTO50630 50620 IFSU$=","THENUD=2:GOTO50630 50625 GOTO50670 50630 ZA=ZB+1 50640 IFMID$(BE$,ZA,1)=""THENPRINT"[213]ND WAS ?":GOTO50530 50650 IFMID$(BE$,ZA,1)=" "THENZA=ZA+1:GOTO50650 50660 RETURN 50670 IFSU$="IHN"ORSU$="SIE"ORSU$="ES"THENO1=OM:GOTO51300 51000 REM BINAERE SUCHROUTINE -------------------------------------------------- 51001 : 51007 REM ANFANG UND ENDE DES SUCHBEREICHES ERMITTELN 51008 I=ASC(LEFT$(SU$,1)) 51009 IFI-65<0ORI-65>25THENGOSUB51500:GOTO50000 51010 AN=IN(I-65):REM ANFANG DES SUCHBEREICHES 51012 IZ=64 51013 IFIN(I-IZ)=0THENIZ=IZ-1:GOTO51013 51015 EN=IN(I-IZ)-1:REM ENDE DES SUCHBEREICHES 51016 IFAN=0THENGOSUB51500:UD=0:GOTO50000 51020 SZ=197:N=INT(LOG(EN-AN+1)/LOG(2))+1 :REM MAXIMAL-FORMEL 51030 SA=AN-1+(2^N)/2:REM MITTE DER GES.DAT 51040 GOSUB52100:REM A$ LESEN 51050 N=N-1 :REM 1.ABFRAGE 51060 : 51070 REM SU$ MIT A$ VERGLEICHEN ------ 51080 : IFLEN(SU$)<3THEN51110 51090 : IFWA=1 AND SU$=LEFT$(A$,LEN(SU$)) THENVE=WC:GOTO51300 51100 : IFWA<>3ORSU$<>RIGHT$(A$,LEN(SU$))THEN51110 51102 : IFUD=1ORUD=2THENUD=3:O1=0:O2=0 51104 : IFO1=0THENO1=WC:OM=O1:GOTO51300 51105 : IFO2=0THENO2=WC:OM=O1:GOTO51300 51110 : IFWA=2 AND SU$=A$ THENRI=WC:GOTO51300 51115 : IFWA=5 AND SU$=A$ THENAD=WC:GOTO51300 51120 : IFWA=1 AND SU$=A$ THENVE=WC:GOTO51300 51125 : IFWA=4 AND SU$=A$ THEN51300 51130 : IFSU$SA+EN-ANANDN>-1THENN=N-1:GOTO51140:REM ''UEBERLAUF'' 51150 : SA=SA+(2^(N-1)):GOSUB52100:REM ''HALBIEREN'' 51160 : 51170 :N=N-1 :REM NAECHST. HALBIEREN 51180 :IFN<0THENGOSUB51500:UD=0:GOTO50000 51190 REM PRINT"SA=";SA;" N=";N :REM UNNOETIG !! 51200 :GOTO51060:REM NAECHST. SUCH-VERS. 51300 REM NAECHSTES WORT 51310 ZA=ZB+1 51320 IFMID$(BE$,ZA,1)=""THEN50530 51330 IFMID$(BE$,ZA,1)=" "THENZA=ZA+1:GOTO51330 51350 GOTO50530 51500 REM ICH KENNE SU$ NICHT -------------------------------------------------- 51501 : 51510 I=INT(3*RND(1))+1 51520 ONIGOTO51530,51540,51550 51530 X$=""+"ICH KENNE DAS WORT '"+SU$+"' NICHT.":GOTO52000 51540 X$=""+"DAS WORT '"+SU$+"' IST MIR NICHT BEKANNT.":GOTO52000 51550 X$=""+"DEUTSCH IST LEIDER NUR MEINE ZWEITE SPRACHE. ICH KENNE DAS " 51555 X$=X$+"WORT '"+SU$+"' NICHT.":GOTO52000 52000 REM FORMATIERTE TEXTAUSGABE ---------------------------------------------- 52010 IFX$=""THEN52090 52020 IFLEN(X$)<40THENPRINTX$:GOTO52090 52030 IFLEN(X$)=40THENPRINTX$;:GOTO52090 52040 I$=LEFT$(X$,41):IC=0:FORI=1TOLEN(I$):IFMID$(I$,I,1)=" "THENIC=I 52050 NEXTI:IFIC=0THENPRINTX$:GOTO52090 52060 I$=LEFT$(I$,IC-1):IFLEN(I$)=40THENPRINTI$; 52070 IFLEN(I$)<40THENPRINTI$ 52080 X$=RIGHT$(X$,LEN(X$)-IC):GOTO52010 52090 RETURN 52100 REM SATZ-TEILBEREICH LESEN ----------------------------------------------- 52101 : 52110 HB%=SA/256:LB%=SA-HB%*256 52112 PRINT#15,"P";CHR$(3);CHR$(LB%);CHR$(HB%);CHR$(1) 52114 INPUT#15,A:IFA=50THENPRINT"SATZNUMMER ZU HOCH" 52120 IFA=50THENRETURN 52130 INPUT#1,A$ 52140 WA=VAL(MID$(A$,22,1)) 52150 WC=VAL(MID$(A$,23,3)) 52160 A$=LEFT$(A$,21) 52170 IFRIGHT$(A$,1)=""THENA$=LEFT$(A$,LEN(A$)-1):GOTO52170 52180 RETURN